package org.dxy.infrastructure.entity.query;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 工序执行查询实体
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("process_execution_view")
public class ProcessExecutionViewEntity {
    /** 工序ID */
    @TableId
    private Long processId;
    /** 工序名称 */
    private String processName;
    /** 工单ID */
    private Long workOrderId;
    /** 工单编号 */
    private String workOrderCode;
    /** 设备ID */
    private Long equipmentId;
    /** 设备名称 */
    private String equipmentName;
    /** 最后操作人ID */
    private String lastOperator;
    /** 最后操作人姓名 */
    private String lastOperatorName;
    /** 计划开始时间 */
    private String plannedStartTime;
    /** 实际开始时间 */
    private LocalDateTime actualStartTime;
    /** 暂停时间 */
    private LocalDateTime pauseTime;
    /** 暂停原因 */
    private String pauseReason;
    /** 恢复时间 */
    private LocalDateTime resumeTime;
    /** 工序状态 */
    private String status;
    /** 备注 */
    private String remarks;
    /** 完成时间 */
    private LocalDateTime completedTime;
    /** 失败时间 */
    private LocalDateTime failedTime;
    /** 失败原因 */
    private String failureReason;
    /** 当前步骤ID */
    private Long currentStepId;
    /** 当前步骤名称 */
    private String currentStepName;
    /** 最近步骤变更时间 */
    private LocalDateTime lastStepChangeTime;
    /** 最近步骤变更类型 */
    private String lastStepChangeType;
    /** 最近步骤变更原因 */
    private String lastStepChangeReason;
    /** 质检结果（PASS-通过, FAIL-不通过） */
    private String qualityCheckResult;
    /** 质检不通过原因 */
    private String qualityCheckFailReason;
    /** 质检时间 */
    private LocalDateTime qualityCheckTime;
    /** 挂起时间 */
    private LocalDateTime holdTime;
    /** 挂起原因 */
    private String holdReason;
    /** 解除挂起时间 */
    private LocalDateTime releaseTime;
    /** 返工时间 */
    private LocalDateTime reworkTime;
    /** 返工原因 */
    private String reworkReason;
    /** 分配工位ID */
    private Long assignedWorkstationId;
    /** 分配设备ID */
    private Long assignedEquipmentId;
}